﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using ChainAnalises.Classes.IntervalAnalysis;

namespace Segmentator.Dividers
{
    /// <summary>
    /// Выделенные слова в цепочке в формате "Слово, позиция встречи"
    /// </summary>
    class DataAfterIteration
    {
        /// <summary>
        /// Позиции вхождений одного слова
        /// </summary>
        private List<int> _word_positions = new List<int>();
        /// <summary>
        /// Слово
        /// </summary>
        private Chain _chain;

        private Dictionary<Chain, List<int>> match;

        public DataAfterIteration()
        {
            match = new Dictionary<Chain, List<int>>();
        }
        /// <summary>
        /// Положить цепь
        /// </summary>
        /// <param name="chain"></param>
        public void Next(Chain chain)
        {
            _chain = chain;
        }
        /// <summary>
        /// Положить позицию
        /// </summary>
        /// <param name="position"></param>
        public void Put(int position)
        {
            _word_positions.Add(position);
        }
        /// <summary>
        /// Ассоциирую выборку мест встречи слов в цепи с самим словом
        /// </summary>
        public void commit()
        {
            match.Add(_chain, _word_positions);
            _chain = null;
            _word_positions = new List<int>();
        }

        /// <summary>
        /// Возвращает словарь в формате "слово - массив позиций вхождения"
        /// </summary>
        /// <returns></returns>
        public Dictionary<Chain, List<int>> GetEntries()
        {
            return match;
        }
    }
}
